import multiprocessing
import os
import time

# 进程之间不共享全局变量
# 主进程会等待所有的子进程执行结束再结束
dataLIst=list()
def dance(count):
   # 获取当前进程的编号
  print('dance',os.getpid())
  # 获取当前进程
  print("dance",multiprocessing.current_process())
  for i in range(count):
    dataLIst.append(i)
    print("跳舞中...")
    time.sleep(0.2)
  print("dataLIst",dataLIst)
def sing(count):
   # 获取当前进程的编号
  print('sing',os.getpid())
  # 获取当前进程
  print("sing",multiprocessing.current_process())
  for i in range(count):
    print("唱歌中...")
    time.sleep(0.2)
  print("dataLIst",dataLIst)
  
if __name__ == "__main__":
  # 获取当前进程的编号
  print('main',os.getpid())
  # 获取当前进程
  print("main",multiprocessing.current_process())
  danceProcess=multiprocessing.Process(target=dance,args=(5,))
  singProcess=multiprocessing.Process(target=sing,kwargs={"count":10})
  # 设置守护主进程，主进程退出子进程直接销毁，子进程的生命周期依赖与主进程
  danceProcess.daemon = True
  singProcess.daemon = True
  danceProcess.start()
  singProcess.start()
  # 主进程延时0.5秒钟
  time.sleep(0.5)
  print("over")
  # 让子进程销毁
  # danceProcess.terminate()
  # singProcess.terminate()
  exit()

    # 总结： 主进程会等待所有的子进程执行完成以后程序再退出


